package de.mnit.basis.swt.element.steuer;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;

import de.mnit.basis.fehler.Fehler;
import de.mnit.basis.fehler.system.F_Sys_Datei;
import de.mnit.basis.swt.grafik.Bild_SWT;
import de.mnit.basis.swt.grafik.S_Bild_SWT;
import de.mnit.basis.swt.grafik.S_SWT_Hat_Bild;


/**
 * @author Michael Nitsche
 */
public class SWT_Knopf extends A_SWT_Steuer<SWT_Knopf,Button> implements S_SWT_Hat_Bild {

	public static void main(String[] args) {
		start(new SWT_Knopf("OK"),150,100);
	}


	private String text=null;
	private Object bild=null;


	public SWT_Knopf() {}

	public SWT_Knopf(String text) {
		this.text=text;
	}


	public SWT_Knopf sText(String text) {
		Fehler.objekt.wenn_Null(text);
		if(this.istErzeugt())
			swt().setText(text);
		else
			this.text=text;
		return this;
	}

	/**
	 * Disabled-Image sieht unter Win bescheiden aus!
	 * Leider ist hier (noch) kein setDisabledImage wie beim ToolItem möglich!
	 */
	public SWT_Knopf sBild(Object bild) {
		if(!t.istErzeugt()) this.bild=bild;
		else iBild(bild);
		return this;
	}

	public S_Bild_SWT gBild() {
		try {
			return Bild_SWT.neu(swt().getImage());
		}
		catch(F_Sys_Datei e)   { throw Fehler.sonstige.da_Unmoeglich(e); }
	}

	public String gText()   { return swt().getText(); }

	// ERZEUGEN

	protected int style3()   { return SWT.PUSH; }

	protected Button roh(Composite basis, int style)   { return new Button(basis,style); }

	protected void init3() {
		if(this.text!=null) swt().setText(this.text);
		if(this.bild!=null) iBild(this.bild);
	}

	// INTERN

	private void iBild(Object bild) {
		try {
			swt().setImage(Bild_SWT.neu_Direkt(bild).gImage());
		}
		catch(F_Sys_Datei e)   { Fehler.zeig(e); }
	}

}
